﻿using sipfe.model.dataAccess;
using sipfe.model.encuesta;
using sipfe.model.sqlExecutor;
using sipfe.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace sipfe.service.encuesta
{
    public class EncuestaService
    {
        public SIPMaeEncuesta AddNuevaEncuestaService(SIPMaeEncuesta MaeEncuesta)
        {
            EncuestaDAO encuestaDAO = new EncuestaDAO();
            return encuestaDAO.AddNuevaEncuestaDAO(MaeEncuesta);
        }

        public List<SIPMaeEncuesta> ListarEncuestaDetService()
        {
            EncuestaDAO encuestaDAO = new EncuestaDAO();
            return encuestaDAO.ListarEncuestaDetDAO();
        }

        public SIPMaeEncuesta ListarEncuestaDetByIdService(int n_ideEncuesta)
        {
            EncuestaDAO encuestaDAO = new EncuestaDAO();
            return encuestaDAO.ListarEncuestaDetById(n_ideEncuesta);
        }

        public SIPMaeEncuesta AddNexPreguntaEncuestaService(SIPDetEncuesta sipDetEncuesta)
        {
            EncuestaDAO encuestaDAO = new EncuestaDAO();
            return encuestaDAO.AddNexPreguntaEncuestaDAO(sipDetEncuesta);
        }

        public SIPMaeEncuesta GrabarLLenadoEncuestaService(string arrayUnica, string arrayMultiple, string arrayDescript, string arrayMatricial,
                                                            int n_IdeUsuario, int n_IdePersona, int n_IdeEncuesta)
        {
            int n_IdePregunta       = 0;
            string[] array_unica        = arrayUnica.Split(',');
            string[] array_multiple     = arrayMultiple.Split(',');
            string[] array_descript     = arrayDescript.Split(',');
            string[] array_matricial    = arrayMatricial.Split(',');
            int n_IdeDetEncuesta=0;
            string v_Desc="";
            int n_NumCheck = 0;

           // string reqNivel = Request.Form[nombreNivel + (i + 1)];

            SIPDetEncuestaPersona sipDetEncuestaPersona = new SIPDetEncuestaPersona();
            sipDetEncuestaPersona.nIdePersona   = n_IdePersona;
            sipDetEncuestaPersona.nIdeEncuesta  = n_IdeEncuesta;
            sipDetEncuestaPersona.nIdeUsuReg    = n_IdeUsuario;
            sipDetEncuestaPersona.dtFecReg      = DateTime.Now;

            SIPDetRptaPregunta sipDetRptaPregunta;

            if (!string.IsNullOrEmpty(arrayDescript))
            {
                for (int i = 0; i < array_descript.Length; i++)
                {
                    string[] array_descript_Aux = array_descript[i].Split('|');
                    n_IdeDetEncuesta            = Int32.Parse(array_descript_Aux[1]);
                    v_Desc  = array_descript_Aux[2];
                    sipDetRptaPregunta  =   new SIPDetRptaPregunta();
                    sipDetRptaPregunta.dtFecReg         = DateTime.Now;
                    sipDetRptaPregunta.nIdeDetEncuesta  = n_IdeDetEncuesta;
                    sipDetRptaPregunta.vDesc    = v_Desc;
                    sipDetEncuestaPersona.SIPDetRptaPregunta.Add(sipDetRptaPregunta);
                }
            }

            SIPDetRptaPreguntaItem sipDetRptaPreguntaItem;

            if (!string.IsNullOrEmpty(arrayUnica))
            {
                for (int i = 0; i < array_unica.Length; i++)
                {
                    sipDetRptaPreguntaItem = new SIPDetRptaPreguntaItem();
                    string[] array_unica_Aux = array_unica[i].Split('|');
                    //  n_IdeDetEncuesta = Int32.Parse(array_unica_Aux[1]);
                    n_IdePregunta = Int32.Parse(array_unica_Aux[2]);
                    sipDetRptaPreguntaItem.nIdePregunta = n_IdePregunta;
                    sipDetRptaPreguntaItem.dtFecReg = DateTime.Now;
                    sipDetEncuestaPersona.SIPDetRptaPreguntaItem.Add(sipDetRptaPreguntaItem);
                }
            }

            if (!string.IsNullOrEmpty(arrayMultiple))
            {
                for (int i = 0; i < array_multiple.Length; i++)
                {
                    sipDetRptaPreguntaItem = new SIPDetRptaPreguntaItem();
                    string[] array_multiple_Aux = array_multiple[i].Split('|');
                    //  n_IdeDetEncuesta = Int32.Parse(array_unica_Aux[1]);
                    n_IdePregunta = Int32.Parse(array_multiple_Aux[2]);
                    sipDetRptaPreguntaItem.nIdePregunta = n_IdePregunta;
                    sipDetRptaPreguntaItem.dtFecReg = DateTime.Now;
                    sipDetEncuestaPersona.SIPDetRptaPreguntaItem.Add(sipDetRptaPreguntaItem);
                }
            }

            if (!string.IsNullOrEmpty(arrayMatricial))
            {
                for (int i = 0; i < array_matricial.Length; i++)
                {
                    sipDetRptaPreguntaItem = new SIPDetRptaPreguntaItem();
                    string[] array_matricial_Aux = array_matricial[i].Split('|');
                    n_IdePregunta = Int32.Parse(array_matricial_Aux[2]);
                    n_NumCheck = Int32.Parse(array_matricial_Aux[3]);

                    sipDetRptaPreguntaItem.nIdePregunta = n_IdePregunta;
                    sipDetRptaPreguntaItem.dtFecReg = DateTime.Now;
                    sipDetRptaPreguntaItem.nNumCheck = n_NumCheck;
                    sipDetEncuestaPersona.SIPDetRptaPreguntaItem.Add(sipDetRptaPreguntaItem);
                }
            }
            //arrayMatricial[countUnica] = n_IdeEncuesta + "|" + n_IdeDetEncuesta + "|" + valor; value = "@itemAux3.nIdePregunta|@h"


            EncuestaDAO encuestaDAO = new EncuestaDAO();
            return encuestaDAO.GrabarLLenadoEncuestaDAO(sipDetEncuestaPersona);
        }

        public List<SIPMaeEncuesta> ListarLlenarEncuestaDetService_old(int ide_Empresa, string n_IdePrograma, string n_IdeAmbito)
        {
            EncuestaDAO encuestaDAO = new EncuestaDAO();
            return encuestaDAO.ListarLlenarEncuestaDetDAO(ide_Empresa, n_IdePrograma, n_IdeAmbito);
        }



        public IList<dynamic> ListarLlenarEncuestaDetService(int ide_Empresa, string n_IdePrograma, string n_IdeAmbito)
        {
           // EncuestaDAO encuestaDAO = new EncuestaDAO();
           // return encuestaDAO.ListarLlenarEncuestaDetDAO(ide_Empresa, n_IdePrograma, n_IdeAmbito);

            String[] parametros = new String[] { ide_Empresa.ToString(), n_IdePrograma, n_IdeAmbito };
            String[] nombreParametros = new String[] { "ide_Empresa", "n_IdePrograma", "n_IdeAmbito" };
            IList<dynamic> lista = SqlExecutorSP.executeStore("paListarSIPEncuestaLlenado", parametros, nombreParametros);
            return lista;
        }

        public decimal verificaTarifaExisteService(int n_IdePersona, int n_IdeEncuesta)
        {
            EncuestaDAO encuestaDAO = new EncuestaDAO();
            return encuestaDAO.verificaTarifaExisteDAO(n_IdePersona, n_IdeEncuesta);
        }

        public IList<dynamic> ListarMisEncuestasDetService(int n_IdePersona)
        {
            String[] parametros = new String[] { n_IdePersona.ToString()};
            String[] nombreParametros = new String[] { "n_IdePersona"};
            IList<dynamic> lista = SqlExecutorSP.executeStore("paListarMisEncuestaLlenas", parametros, nombreParametros);
            return lista;
        }
    }
}
